1. Field of the Invention
The present invention relates generally to an improved data processing system and in particular to a method and apparatus for processing data. Still more particularly, the present invention relates to a computer implemented method, apparatus, and computer usable program code for analyzing the performance of a data processing system.
2. Description of the Related Art
In designing and writing code for applications, one objective is for the application to scale well when more than one processor is used. A complex application, such as, WebSphere™ Application Server, may support many different transactions. It is important that this application be able to take advantage of multiple threads and multiple processors. When the work load increases, an application that scales well should be able to take advantage of multiple processors and have better performance than when only a single processor is available. If the application does not scale well, then the availability of additional processors does not necessarily improve performance. In fact, the availability of additional processors may actually degrade performance.
Currently, determining why an application does not scale well is often a very difficult problem. One aspect of understanding the scaling of applications is to determine what threads are waiting to execute and why they are waiting to execute. This type of data may help determine the flow between different threads, such as Java threads. A thread may wait for a requested operation or function to be completed. For example, a thread or routine may request data to be read from a storage device. This thread or routine is placed into a waiting mode until the operation to return data is completed. Waiting occurs for any type of input/output (I/O) in these examples.
Currently, this type of information is obtained by generating notifications or calls for all wait and notification mechanisms used in a particular environment. This type of notification also is considered too invasive. Again, the code to make the callout, receive the callout, and make the determination of importance may include much more than the code that processes the event. This type of perturbation affects the value of profiling and analyzing applications.